The present disclosure generally relates to a service mesh, and more particularly to routing messages in a dynamic service mesh.
Service Oriented Architecture (SOA) is a popular architectural paradigm for the development of software applications. For example, Web services provide the SOA to other applications via industry standard networks, interfaces, and protocols. The SOA is based on loosely-coupled and standards-based architectures. It is an approach to distributed computing that allows networked software resources to be leveraged. The SOA enables enterprises to integrate services, handle business events, and automate business processes more efficiently. For example, an SOA links information technology resources, data, services, and applications.
The SOA can include an enterprise service bus (ESB). An ESB is an underlying infrastructure for the SOA and implements the abstract design concept of the SOA. An ESB is a distributed middleware system for integrating Information Technology (IT) assets. The messaging bus in the ESB connects services together. An ESB may be an event-driven and standards-based messaging engine that provides services for complex architectures. The ESB provides infrastructure that links together services and clients to enable distributed applications and processes. The ESB provides the capabilities of message handling, filtering, data transformation, content-based routing, and message repositories. The ESB typically provides a service to a client using a service deployed on an ESB server at runtime. The ESB allows systems to interact through standard transports, such as file transfer protocol (FTP) and hypertext transfer protocol (HTTP), and to provide SOA-based applications.
The ESB may be used for client-server interactions and may provide infrastructure that links together services and clients to enable distributed applications and processes. The ESB may include one or more messaging busses that logically interconnect available services and clients. For example, the ESB may provide a service to the client using a service deployed on an ESB server at runtime. In an example, the ESB is deployed to an application server and then services are deployed to the ESB.
These architectures may be scaled by introducing more services into the SOA. It is harder, however, to handle orchestration between a large number of services. Today, some existing SOA design patterns try to solve the problem of scaling these architectures. For example, a content based router enables routing of messages to the correct destination based on the contents of the message exchanges. In another example, a static router enables routing of messages through a manually-configured routing entry. These solutions, however, fall short in large scale environments. As cloud computing grows, such demands for orchestration between large amounts of services becomes increasingly important.